package admin_advert_api

import (
	"blog_go/global"
	"blog_go/models"
	"blog_go/models/res"
	"github.com/fatih/structs"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
)

type AdvertUpdateReq struct {
	Id     uint   `json:"id" structs:"-"`
	Title  string `json:"title" binding:"required" msg:"标题不能为空" structs:"title"`        // 显示的标题
	Href   string `json:"href" binding:"required,url" msg:"链接输入非法" structs:"href"`      // 跳转的链接
	Image  string `json:"image" binding:"required,url" msg:"图片地址输入非法" structs:"images"` // 图片
	IsShow *bool  `json:"is_show" binding:"required" msg:"isShow必传" structs:"is_show"`  // 是否展示 使用指针可以接受false,不然false也会认为是没传,触发非空 指针类型只有nil才会触发非空
}

// AdvertUpdate 广告更新
// @Tags 广告管理
// @Summary 广告更新
// @Description 广告更新
// @Param params body AdvertUpdateReq true "入参json"
// @Param token header string true "token"
// @Router /api/admin/advert/list [put]
// @Produce json
// @Success 200 {object} res.Response{data=bool}
func (AdminAdvertApi) AdvertUpdate(c *gin.Context) {
	var req AdvertUpdateReq
	if err := c.ShouldBind(&req); err != nil {
		panic(res.ErrorMsg{Err: err, Data: &req})
	}
	var advertModel models.AdvertModel
	// 不存在会有err
	err := global.DB.Take(&advertModel, req.Id).Error
	if err != nil {
		panic("广告不存在")
	}
	mp := structs.Map(req)
	// advertModel上有id会根据id条件
	err = global.DB.Model(&advertModel).Updates(mp).Error
	if err != nil {
		logrus.Error(err)
		panic(err)
	}
	res.Ok("修改成功", true, c)
}
